ca8fd56e425af33b81c5579bc3cb7d0f73430274,src/main/java/fr/inria/astor/core/manipulation/sourcecode/VariableResolver.java,VariableResolver,convertIngredient,#VarMapping#Map#,611
Before Change
Map<VarWrapper, List<CtVariable>> mappedVars = varMapping.getMappedVariables();
for (VarWrapper var : mappedVars.keySet()) {
CtVariable varNew = mapToFollow.get(var.getVar().getVariable().getSimpleName());
originalMap.put(var.getVar(), var.getVar().getVariable());
var.getVar().setVariable(varNew.getReference());
}
After Change
//
CtVariableReference newVarReference = varNew.getReference();
CtVariableAccess originalVarAccessDestination = var.getVar();
CtVariableAccess newVarAccessDestination = null;
// if the var to reference is a local or parameter
if (newVarReference instanceof CtLocalVariableReference
|| newVarReference instanceof CtParameterReference) {
// let's check the destination Writes or Reads
if (originalVarAccessDestination instanceof CtFieldWrite
|| originalVarAccessDestination instanceof CtVariableWrite) {
// We replace the Write by a Var writter
newVarAccessDestination = MutationSupporter.getFactory().Core().createVariableWrite();
newVarAccessDestination.setVariable(newVarReference);
} else { // read
newVarAccessDestination = MutationSupporter.getFactory().Code().createVariableRead(newVarReference,